package com.y.simple.utils;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.y.simple.global.ResultException;

import java.util.ArrayList;
import java.util.List;

public class WrapperUtil<T> {

    /**
     * <h1>解析排序规则对 wrapper 进行加工</h1>
     * <ul>
     *     <li>无排序规则时，默认由创建时间降序排列</li>
     *     <li>[ASC/DESC].[字段名];</li>
     * </ul>
     * @param wrapper wrapper
     * @param orderRule 排序规则
     */
    public void orderUtil(QueryWrapper<T> wrapper, String orderRule) {
        // 解析 orderRule
        if (StringUtil.hasEmpty(orderRule)) {
            // 解析排序规则并生成
            String[] groupList = orderRule.split(";");
            for (String group : groupList) {
                String[] term = group.split("\\.");
                // 异常处理
                if (term.length != 2) {
                    throw new ResultException("400","排序参数异常，请重新检查");
                }
                // 处理待排序项 尾部
                String column = StringUtil.toUnderlineCase(term[1]);
                // 处理排序规则 头部
                if ("ASC".equals(term[0])) {
                    wrapper.orderByAsc(column);
                } else if ("DESC".equals(term[0])) {
                    wrapper.orderByDesc(column);
                } else {
                    throw new ResultException("400","排序参数异常，请重新检查");
                }
            }
        } else {
            wrapper.orderByDesc("create_time");
        }
    }

    public static void main(String[] args) {
        String str = "data";
    }

}
